package com.jdk.demo.reflect.clazz;

public class EnclosingClass {

	// getEnclosingClass()：返回一个类，当前类(一般是成员类)在这个类(一般叫封闭类，相对于内部类的外部类或者说外面一层)中定义
	// 我们在新建一个类的时候，这个类可以使另一个类中定义的成员类、构造方法中定义的内部类、方法中定义的内部类。可以通过当前的类反向获取定义当前的类的类、构造或者方法，这三种情况对应上面三个方法
	// 在这里，Inner就是当前定义的类，它是Outter的静态成员类，或者说Outter是Inner的封闭类，通过Inner的Class的getEnclosingClass()方法获取到的就是Outter的Class实例
	public static void main(String[] args) throws Exception{
        Class<Outter.Inner> clazz = Outter.Inner.class;
        Class<?> enclosingClass = clazz.getEnclosingClass();
        System.out.println(enclosingClass.getName());
    }
    // Inner类是Outter类的成员类
    public static class Outter {
        public static class Inner {

        }
    }

}
